package com.czh.intelligentoj.judge.codesandbox.impl;

import com.czh.intelligentoj.judge.codesandbox.CodeSandbox;
import com.czh.intelligentoj.judge.codesandbox.model.ExecuteCodeRequest;
import com.czh.intelligentoj.judge.codesandbox.model.ExecuteCodeResponse;
import com.czh.intelligentoj.judge.codesandbox.model.JudgeInfo;
import com.czh.intelligentoj.model.enums.JudageInfoMeaasgeEnum;
import com.czh.intelligentoj.model.enums.QuestionSubmitStatusEnum;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/*
 * ClassName: ExampleCodeSandbox
 * Package: com.czh.intelligentoj.judge.codesandbox.impl
 * Description:
 *          本地测试代码沙箱：
 *                      1、通过executeCodeRequest请求信息，获取用户题解、输入用例、所用编程语言等信息。
 *                      2、通过执行用户代码，获取输出结果。
 *                      3、通过ExecuteCodeResponse封装执行结果，返回给前端。
 * @Author: CZH
 * @Create: 2025
 */
@Slf4j
public class ExampleCodeSandbox implements CodeSandbox {
    @Override
    public ExecuteCodeResponse executeCode(ExecuteCodeRequest executeCodeRequest) {
//        System.out.println("本地测试代码沙箱");
//      1、通过executeCodeRequest请求信息，获取用户题解、输入用例、所用编程语言等信息。
        List<String> inputList = executeCodeRequest.getInputList();
//      3、通过ExecuteCodeResponse封装执行结果，返回给前端。
        ExecuteCodeResponse executeCodeResponse = new ExecuteCodeResponse();
        executeCodeResponse.setOutput(inputList);
        executeCodeResponse.setMessage("执行成功");
        executeCodeResponse.setStatus(QuestionSubmitStatusEnum.SUCCESS.getValue());
//      设置判题执行后的相关信息
        JudgeInfo judgeInfo = new JudgeInfo();
        judgeInfo.setMessage(JudageInfoMeaasgeEnum.ACCEPTED.getText());
        judgeInfo.setMemory(1024L);
        judgeInfo.setTime(1000L);
        executeCodeResponse.setJudgeInfo(judgeInfo);
        return executeCodeResponse;
//        return null;
    }
}
